lifeCountry.csv파일을 다운받으세요.classProject1.R이라는 파일로 저장하세요.classProject1.R을 더블클릭하여 엽니다.NA를 다루는 법classProject1.R을 저장해서 learningSpoonsR@gmail.com 로 보내주세요.lifeCountry.csv파일을 다운받으세요.classProject1.R이라는 파일로 저장하세요.classProject1.R을 더블클릭하여 엽니다.setwd("C:/LS-DS/classProject")
dataset <- read.csv("lifeCountry.csv", stringsAsFactors = FALSE)
library(dplyr)
library(ggplot2)
데이터셋 dataset에는 161개의 행과 11개의 열로 구성이 되어있습니다.
NA를 다루는 법NA를 다루는 법임의로 OECD_GDP를 변형해봅니다.
dataset$OECD_GDP[3] <- "na"
dataset$OECD_GDP[4] <- ""
위의 값들을 NA로 바꿔보겠습니다. 2가지 접근법이 있습니다. dataset의 OECD_GDP변수 값이 "na"인 경우에 NA로 변경하는 방법입니다.
# before
head(dataset$OECD_GDP)
## [1] NA NA "na" "" NA
## [6] "18913.23927"
# dplyr method
# https://stackoverflow.com/questions/28013850/change-value-of-variable-with-dplyr
dataset <- dataset %>%
mutate(OECD_GDP = replace(OECD_GDP, OECD_GDP=="na", NA)) %>%
mutate(OECD_GDP = replace(OECD_GDP, OECD_GDP=="", NA))
# classic method
dataset$OECD_GDP[dataset$OECD_GDP == "na"] <- NA
dataset$OECD_GDP[dataset$OECD_GDP == ""] <- NA
# after
head(dataset$OECD_GDP)
## [1] NA NA NA NA NA
## [6] "18913.23927"
더 간단하게 처리하려면 | (or)를 사용해서 아래와 같이 할 수 있습니다.
# dplyr method
dataset <- dataset %>%
mutate(OECD_GDP = replace(OECD_GDP, (OECD_GDP=="na" | OECD_GDP==""), NA))
# classic method
dataset$OECD_GDP[(dataset$OECD_GDP=="na" | dataset$OECD_GDP=="")] <- NA
아래와 같은 방법도 가능합니다. 즉, (OECD_GDP=="na" | OECD_GDP=="")는 OECD_GDP %in% c("na", "")와 같습니다.
# dplyr method
dataset <- dataset %>%
mutate(OECD_GDP = replace(OECD_GDP, OECD_GDP %in% c("na", ""), NA))
# classic method
dataset$OECD_GDP[dataset$OECD_GDP %in% c("na", "")] <- NA
위에는 "na"와 ""값을 NA로 바꾸기 위해서 총 6가지 방법을 보여드렸습니다. 이처럼 코딩에는 여러개의 정답이 있습니다. 저는 개인적으로 마지막 방법의 classic method를 사용할 것 같습니다.
dataset %>% group_by(Continent) %>% summarise(mean(GDP_per_Capita), mean(Life.Expectancy))
a <- ggplot(dataset) +
geom_point(aes(x = GDP_per_Capita, y = Life.Expectancy, color = Continent))
a
library(plotly)
##
## Attaching package: 'plotly'
## The following object is masked from 'package:ggplot2':
##
## last_plot
## The following object is masked from 'package:stats':
##
## filter
## The following object is masked from 'package:graphics':
##
## layout
ggplotly(a)
a + facet_wrap(~ Continent)
dataset <- dataset %>% mutate(ageSexDiff = Female - Male)
dataset %>%
group_by(Continent) %>%
summarise(contiSexDiff = mean(ageSexDiff)) %>%
arrange(desc(contiSexDiff))
Dumbell plot을 그려보겠습니다.
# Dumbell plot (p25 in M24-ggplot2_Gallery)
library(ggalt)
continentGender <- dataset %>%
group_by(Continent) %>%
summarise(avgMen = mean(Male), avgWomen = mean(Female)) %>%
arrange(desc(avgWomen))
b <- ggplot(continentGender,
aes(x = avgMen,
xend = avgWomen,
y= reorder(Continent, -avgWomen),
group = Continent)) +
geom_dumbbell()
b
c <- b +
labs(x=NULL, y=NULL, title="Continents difference in life expectancy",
subtitle = "left: Men, right: Women",
caption = "Source: OECD") +
theme(plot.title = element_text(hjust=0.5, face="bold"),
plot.background=element_rect(fill="#f7f7f7"),
panel.background=element_rect(fill="#f7f7f7"),
axis.ticks=element_blank(),
legend.position="top",
panel.border=element_blank())
c
classProject1.R을 저장해서 learningSpoonsR@gmail.com 로 보내주세요.